home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 March / macformat-022.iso / Shareware City / Developers / src / out-of-phase-102-c / OutOfPhase 1.02 Source / OutOfPhase Folder / GenInstrTopology.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-23  |  2.1 KB  |  50 lines  |  [TEXT/KAHL]

  1. /* GenInstrTopology.h */
  2.  
  3. #ifndef Included_GenInstrTopology_h
  4. #define Included_GenInstrTopology_h
  5.  
  6. /* GenInstrTopology module depends on */
  7. /* MiscInfo.h */
  8. /* Audit */
  9. /* Debug */
  10. /* Definitions */
  11. /* Array */
  12. /* OscillatorSpecifier */
  13. /* ModulationSpecifier */
  14. /* Memory */
  15.  
  16. /* GenInstrTopology examines oscillator dependencies and generates schedules for */
  17. /* ordering oscillator evaluation */
  18.  
  19. /* forwards */
  20. struct EvalEnvRec;
  21. struct ArrayRec;
  22. struct OscillatorRec;
  23.  
  24. /* the following oscillator nodes can occur: */
  25. /*   1.  independent oscillator.  this one does not depend on any input and it's */
  26. /*       output is not depended on by anyone. */
  27. /*   2.  source oscillator.  this one's output is used by someone.  this oscillator */
  28. /*       can still generate it's output in one shot, but the output must be saved */
  29. /*       for future use. */
  30. /*   3.  target oscillator.  this one requires input from other oscillators.  it */
  31. /*       can still generate it's output in one shot, but requires a precomputed array */
  32. /*       of input for modulation. */
  33. /*   4.  cyclic complex.  this is a series of interdependent oscillators which */
  34. /*       arises due to feedback loops.  all oscillators here must be evaluated in */
  35. /*       lockstep fashion, and may require input vectors or may need to produce */
  36. /*       output vectors. */
  37. /* instances 2 and 3 are special cases of instance 4 which can be optimized to */
  38. /* run more efficiently.  this implementation does NOT use such optimizations. */
  39.  
  40. /* this routine takes an array of oscillators and builds a series of independent */
  41. /* oscillator groups based on which oscillators depend on others for modulation */
  42. /* input.  the result is an array containing arrays of OscillatorRec's. */
  43. /* for the moment, the ordering is undefined.  if this turns out to matter, or I */
  44. /* implement optimized non-cyclic modulation, then this will need to be changed */
  45. /* by putting them in the proper order and generating dependency annotations. */
  46. struct ArrayRec*            BuildOscillatorLists(struct OscillatorRec** OscillatorArray,
  47.                                                 long NumOscillators);
  48.  
  49. #endif
  50.